/**fex webupload 图片上传公共js 方法,5个入参(objwrap：外层文件  
//listfile：缩略图   
//deafautBtn 是按钮选择
//upPath:
//imgPath:

**/
function fileUpload(objJsons){
	var $obj,$deafautBtn,$list,$upPath,$imgPath;
	 var $json,$ratio,$thumbnailWidth,$thumbnailHeight,$maxLimit;
	 var $multiple,$listImg,$upLoaderNum,$sucessNum,$errorNum;
	 var $objName,$showName,$showPath,$showDelBtn;
	 var uploader;
	 
	 init();
	 
	function init(){
		$obj=objJsons.objwrap;
		$deafautBtn=objJsons.deafautBtn;
		$list=objJsons.listfile;
		$upPath = objJsons.upPath;
		$json = objJsons.json;
		
		$imgPath = objJsons.imgPath;
		$ratio = window.devicePixelRatio || 1;// 优化retina, 在retina下这个值是2
		$thumbnailWidth = !($list.attr("thumbnailWidth"))?$list.attr("thumbnailWidth"):168;
		$thumbnailHeight =!($list.attr("thumbnailHeight"))?$list.attr("thumbnailHeight"):129;
		$maxLimit = !($list.attr("maxLimit"))?300:$list.attr("maxLimit");//最多只能上传照片数（默认选择300张)
		
		$multiple = uploadStr2Bool($list.attr("fex_multiple"),"false");//是否是多张模式（true 可上传多张，false 传单张)
		$listImg = objJsons.imgList;
		$upLoaderNum = 0;//总上传张数
		$sucessNum=0;//上传成功数		
		$errorNum = 0;//上传失败数
		
		$objName = !($list.attr("objName"))?"accessory":$list.attr("objName");//对象名称，如果为空默认为accessory。
		$showName = uploadStr2Bool($list.attr("showName"),"false");//上传成功后是否需要显示名称（默认为false)
		$showPath = uploadStr2Bool($list.attr("showPath"),"false");//上传成功后是否需要显示路径（后期看情况重新设默认值)
		$showDelBtn = uploadStr2Bool($list.attr("showDelBtn"),"false");//上传成功后是否需要显示删除按钮
	}
	
	// Web Uploader实例
	uploader=WebUploader.create({
	        // 自动上传。
	        auto: true,
	        // 不压缩image
	        resize: false,
	        // swf文件路径
	        swf: $upPath+'/js/plugins/webuploader/dist/Uploader.swf',
	        
	        // 文件接收服务端。
	       // server: upPath+'/save_clearnace_upload.htm',
	        server:$upPath+'/seller/fex_upload.htm',
	        // 选择文件的按钮。可选。
	        // 内部根据当前运行是创建，可能是input元素，也可能是flash.
	        pick: {
	        	id:$deafautBtn,
	        	//是否显示多张
	        	multiple:$multiple
	        },
	        fileSingleSizeLimit:2*1024*1024,
	        
	        //最大上传数
	        fileNumLimit:$maxLimit,
	        // 只允许选择文件，可选。
	        accept: {
	            title: 'Images',
	            extensions: 'gif,jpg,jpeg,bmp,png',
	            mimeTypes: 'image/*'
	        }
	    });
	
		
		uploader.on('beforeFileQueued',function(file){
			if(file.size>5*1024*1024){
				alert("图片大小不能超过5M,请重新上传");
			}
			
		});
	
	    // 当有文件添加进来的时候
	    uploader.on( 'fileQueued', function( file ) {
	    	//$obj.find('.btnUpload').hide();
	    	$list.show();
	    	
	    	$upLoaderNum++;
	    	$list.attr("upLoaderNum",$upLoaderNum);
	    	//是否显示删除按钮
/*	    	if($showDelBtn==true){

	    		var showDelBtnDiv = delDiv(file.id);
	    		$list.append(showDelBtnDiv);
	    	}
	    	
			//是否显示名称
	    	if($showName==true){
	    		showNameDiv = nameDiv(file.id);
	    		$list.append(showNameDiv);
	    	}
	    	
	    	//是否显示路径
	    	if($showPath==true){
	    		showPathDiv = pathDiv(file.id);
	    		$list.append(showPathDiv);
	    	}*/
	    	
	    	//删除单张图片
	    	$list.on('click', '.del', function() {
	        	uploader.removeFile( file,true );
	        	delJson(file.id);
//	        	 for (var i=0;i<$json.length;i++){
//	             	var jsonObj = $json[i];
//	             	if(jsonObj.fileId==file.id){
//	             		$json.splice(i,1);
//	             		break;
//	             	}
//	             }
	            $(this).parent().remove();
	        });
	    	
	        //如果是单张模式，则清空div数据
	        if($multiple==false){
	        	delJson(file.id);
//	            for (var i=0;i<$json.length;i++){
//	            	var jsonObj = $json[i];
//	            	if(jsonObj.fileId==file.id){
//	            		$json.splice(i,1);
//	            	//	fileList.attr("json",json);
//	            		break;
//	            	}
//	            }
	        };

	    });
       	    
		// 文件上传成功，给item添加成功class, 用样式标记上传成功。
	    uploader.on( 'uploadSuccess', function(file,data) {
	       	var $li=$list.find('.file-item');
	       	
	       	//var jsonObj = eval("response." + $objName);动态获取返回值，目前先不用
	       	
	        if(data.res==true){
	        	var path = $imgPath+data.accessory.path+data.accessory.ext;
	        	var imgName = data.accessory.path+data.accessory.ext;
	        	var $img = $li.find('img');
	        	
	        	$img.attr('src',path);
	        	var id=$list.attr("type");
	        	//$("#"+id).val(data.path);\
	        	
	        	if($multiple==false){
	        		$listImg.val(imgName);
	        	}else{
		        	var jsonObj = eval("response." + $objName);
		        	jsonObj.num = $sucessNum; 
		        	jsonObj.fileId = file.id;
		            $json.push(jsonObj);
	        	}
	        	
	        	$li.addClass('upload-state-done');
	        	
	        	$sucessNum++;
	        	$list.attr("sucessNum",$sucessNum);
	        	
	        }else{
	            var $error = $li.find('div.error');
	           	// 避免重复创建
		        if ( !$error.length ) {
		            $error = $('<div class="error"></div>').appendTo( $li );
		        }
		        $error.text('上传失败');
		        
		        $errorNum++;
	        	$list.attr("$errorNum",$errorNum);
		        
	        }
	        
	    });
	   // 文件上传失败，现实上传出错。
	    uploader.on( 'uploadError', function( file ) {
	        var $li = $list.find('.file-item'),
	            $error = $li.find('div.error');
	        // 避免重复创建
	        if ( !$error.length ) {
	            $error = $('<div class="error"></div>').appendTo( $li );
	        }
	        $error.text('上传失败');
	        $errorNum++;
        	$list.attr("$errorNum",$errorNum);
	    });
	    // 完成上传完了，成功或者失败，先删除进度条。
	    uploader.on( 'uploadComplete', function( file ) {
	        //$( '#'+file.id ).find('.progress').remove();
	    });
		uploader.on('error',function(tt,file){
			if(tt=='Q_TYPE_DENIED'){
				layer.msg("照片格式不对");
			}
			if(tt=='Q_EXCEED_SIZE_LIMIT'){
				layer.msg("图片超过大小限制2M");
			}
		});
		
		/**
		 * 删除对应JSON数据
		 */
		function delJson(fildId){
			for (var i=0;i<$json.length;i++){
             	var jsonObj = $json[i];
             	if(jsonObj.fileId==fildId){
             		$json.splice(i,1);
             		break;
             	}
             }
		}
		
		/**
		 * 用户名称DIV
		 */
		function nameDiv(fileId){
			var showNameDiv = $('<div></div>');
			showNameDiv.attr('id','info_'+file.id);        
			showNameDiv.attr('class','info');
			return showNameDiv;
		} 
		
		/**
		 * 删除按钮div
		 */
		function delDiv(fildId){
			var showDelBtnDiv = $('<div></div>');
    		showDelBtnDiv.attr('id','del_'+fildId);        
    		showDelBtnDiv.attr('class','del');
    		showDelBtnDiv.css({
    			'cursor':'pointer', 
    			'color':'#ff4545'
    		});
    		return delDiv;
		}
		
		/**
		 * 路径DIV
		 */
		function pathDiv(fildId){
			var showPathDiv = $('<div></div>');
    		showPathDiv.attr('id','path_'+file.id);        
    		showPathDiv.attr('class','path');
    		return showPathDiv;
		}
		
		 function uploadStr2Bool(value,defaultValue){
				if(null==value || (!value) || (value!="true" && value!="false")){
					if(defaultValue=="false"){
						return false;
					}else{
						return true;
					}
				}
				
				if(value=="false"){
					return false;
				}else if(value=="true"){
					return true;
				}
			} 
	    
}


/**
 * 基础参数
 * deafautBtn: 按钮  attr: {upPath:上传路径,pickWidth:按钮宽,pickHeight:按钮高,pickLabel:按钮文字,pickCss:按钮css 样式,maxLimit:最大文件数,fex_multiple:是否多张 } （必须）
 * upBasePath:上传根路径 （必须 二选一）
 * imgPath:图片根路径 （不需要）
 * 
 * 
 * 回调参数
 * successcallback:  文件上传成功，给item添加成功class, 用样式标记上传成功 （file,data）
 * queuedcallback : 当有文件添加进来的时候  （data）
 * errorcallback: 文件上传失败，现实上传出错 （data）
 * beforecallback: 当文件被加入队列之前触发（data）
 * completecallback: 完成上传完了，成功或者失败，先删除进度条 （data）
 * 
 * 
 * 
 * 
   下面例子：
 		  	var upLoaderOptions1={
					deafautBtn : '#filePicker',
					upBasePath : '$!webPath',
					successcallback:function(file,data){alert(data.accessory.path+data.accessory.ext);
			        	var path=data.accessory.path+data.accessory.ext;
			        	$('#img_url_box input').val(path);
			        	$('#img_url_box img').attr('src','$!{imgroot}'+path);
			        	$('#img_url_box').show();
					}
			}
	 		 fileUpload2( upLoaderOptions1);
 */
function fileUpload2(objJsons){
	if(!objJsons){
		return;
	}
	var $deafautBtn,$btnId,$upBasePath,$upPath,$imgPath,$maxLimit,$multiple,$pickWidth,$pickHeight,$pickCss,$pickLabel;
	 var $ratio;
	 var uploader;
	 var $successcallback,$queuedcallback,$errorcallback,$beforecallback,$completecallback;
	 init();
	function init(){
		if(typeof objJsons.successcallback=='function'){
			$successcallback=objJsons.successcallback;
		} 
		if(typeof objJsons.queuedcallback=='function'){
			$queuedcallback=objJsons.queuedcallback;
		} 
		if(typeof objJsons.errorcallback=='function'){
			$errorcallback=objJsons.errorcallback;
		} 
		if(typeof objJsons.beforecallback=='function'){
			$beforecallback=objJsons.beforecallback;
		} 
		if(typeof objJsons.completecallback=='function'){
			$completecallback=objJsons.completecallback;
		} 
		if(objJsons.upBasePath){
			$upBasePath = objJsons.upBasePath;
		}else{
			$upBasePath = objJsons.upPath;
		}
		$imgPath = objJsons.imgPath;
		$deafautBtn=objJsons.deafautBtn;
		var _btnParam=$($deafautBtn);
		if(_btnParam.attr("upPath")){
			$upPath = _btnParam.attr("upPath");
		}else{
			$upPath ='/seller/fex_upload.htm';
		}
		$pickWidth=_btnParam.attr("pickWidth");
		$pickHeight=_btnParam.attr("pickHeight");
		$pickLabel=_btnParam.attr("pickLabel");
		if(!$pickLabel){
			$btnId=$deafautBtn;
		}
		$pickCss=_btnParam.attr("pickCss");
		$maxLimit = !(_btnParam.attr("maxLimit"))?300:_btnParam.attr("maxLimit");//最多只能上传照片数（默认选择300张)
		$multiple = uploadStr2Bool(_btnParam.attr("fex_multiple"),"false");//是否是多张模式（true 可上传多张，false 传单张)
		$ratio = window.devicePixelRatio || 1;// 优化retina, 在retina下这个值是2
	}

    if ( !WebUploader.Uploader.support() ) {
        alert( 'Web Uploader 不支持您的浏览器！如果你使用的是IE浏览器，请尝试升级 flash 播放器');
        throw new Error( 'WebUploader does not support the browser you are using.' );
    }
	// Web Uploader实例
	uploader=WebUploader.create({
			//允许一张上传多次
			duplicate:true,
	        // 自动上传。
	        auto: true,
	        // 不压缩image
	        resize: false,
	        // swf文件路径
	        swf: $upBasePath+'/dist/resources/libs/webupload/dist/Uploader.swf',
	        // 文件接收服务端。
	       // server: upPath+'/save_clearnace_upload.htm',
	        server:$upBasePath+$upPath,
	        // 选择文件的按钮。可选。
	        // 内部根据当前运行是创建，可能是input元素，也可能是flash.
	        pick: {
	        	id:$deafautBtn,
	        	btnId:$btnId,
	        	label:$pickLabel,
	        	css:$pickCss,
	        	//label: '<span style="display:block:width: 301px; height: 201px;">点击选择图片</span>',
	        	//css:"tst-css",
	        	//是否显示多张
	        	multiple:$multiple,
	        	pickWidth:$pickWidth,
	        	pickHeight:$pickHeight
	        },
	        fileSingleSizeLimit:2*1024*1024,
	        //最大上传数
	        fileNumLimit:$maxLimit,
	        // 只允许选择文件，可选。
	        accept: {
	            title: 'Images',
	            extensions: 'gif,jpg,jpeg,bmp,png',
	            mimeTypes: 'image/*'
	        }
	    });
		//当文件被加入队列之前触发
		uploader.on('beforeFileQueued',function(file){
			if($beforecallback){
				$beforecallback(file);
			}else{
				if(file.size>5*1024*1024){
    				uploader.removeFile(file,true);
					alert("图片大小不能超过5M,请重新上传");
				}
			}
		});
	    // 当有文件添加进来的时候
	    uploader.on( 'fileQueued', function( file ) {
	    	if($queuedcallback){
	    		$queuedcallback(file);
	    	}
	    });
		// 文件上传成功，给item添加成功class, 用样式标记上传成功。
	    uploader.on( 'uploadSuccess', function(file,data) {
	    	if(data&&data._raw){
	    		var _raws=data._raw.split(',');
	    		if(_raws.length==2){
	    			if('0'==_raws[0]){
	    				uploader.removeFile(file,true);
	    				layer.msg("用户未登录,请刷新网页重新登录！");
	    				return;
	    			}else if('-1'==_raws[0]){
	    				uploader.removeFile(file,true);
	    				layer.msg("文件上传失败！");
	    				return;
	    			}else if('-2'==_raws[0]){
	    				uploader.removeFile(file,true);
	    				layer.msg("图片裁剪失败，换张图片试试！");
	    				return;
	    			}else if('-3'==_raws[0]){
	    				uploader.removeFile(file,true);
	    				layer.msg("文件超过规定范围！不能超过"+_raws[1]);
	    				return;
	    			}else if('-4'==_raws[0]){
	    				uploader.removeFile(file,true);
	    				layer.msg("图片裁剪失败,换张图片 试试!");
	    				return;
	    			}
	    		}
		    	if($successcallback){
	        		$successcallback(file,data);
	        	}
	    	}
	    });
	   // 文件上传失败，现实上传出错。
	    uploader.on( 'uploadError', function( file ) {
			uploader.removeFile(file,true);
	    	if($errorcallback){
	    		$errorcallback(file);
	    	}else{
	    		layer.msg("上传失败");
	    	}
	    });
	    // 完成上传完了，成功或者失败，先删除进度条。
	    uploader.on( 'uploadComplete', function( file ) {
	    	if($completecallback){
	    		$completecallback(file);
	    	}
	    });
		uploader.on('error',function(tt,file){
			if(tt=='Q_TYPE_DENIED'){
				layer.msg("照片格式不对");
			}else if(tt=='Q_EXCEED_SIZE_LIMIT'){
				layer.msg("图片超过大小限制2M");
			}else if(tt=='F_DUPLICATE'){
				layer.msg("同一张图片不能重复上传");
			}else if(tt=='F_EXCEED_SIZE'){
				layer.msg("上传失败! 文件太大！");
			}else{
				layer.msg("上传失败! "+tt);
			}
		});
		function uploadStr2Bool(value,defaultValue){
				if(null==value || (!value) || (value!="true" && value!="false")){
					if(defaultValue=="false"){
						return false;
					}else{
						return true;
					}
				}
				if(value=="false"){
					return false;
				}else if(value=="true"){
					return true;
				}
		} 
}



/**
 * 基础参数
 * deafautBtn: 按钮  attr: {upPath:上传路径,pickWidth:按钮宽,pickHeight:按钮高,pickLabel:按钮文字,pickCss:按钮css 样式,maxLimit:最大文件数,fex_multiple:是否多张 } （必须）
 * upBasePath:上传根路径 （必须 二选一）
 * imgPath:图片根路径 （不需要）
 * 
 * 
 * 回调参数
 * successcallback:  文件上传成功，给item添加成功class, 用样式标记上传成功 （file,data）
 * queuedcallback : 当有文件添加进来的时候  （data）
 * errorcallback: 文件上传失败，现实上传出错 （data）
 * beforecallback: 当文件被加入队列之前触发（data）
 * completecallback: 完成上传完了，成功或者失败，先删除进度条 （data）
 * 
 * 
 * 
 * 
   下面例子：
 		  	var upLoaderOptions1={
					deafautBtn : '#filePicker',
					upBasePath : '$!webPath',
					successcallback:function(file,data){alert(data.accessory.path+data.accessory.ext);
			        	var path=data.accessory.path+data.accessory.ext;
			        	$('#img_url_box input').val(path);
			        	$('#img_url_box img').attr('src','$!{imgroot}'+path);
			        	$('#img_url_box').show();
					}
			}
	 		 fileUpload3( upLoaderOptions1);
 */
function fileUpload3(objJsons){//可传10M内
	if(!objJsons){
		return;
	}
	var $deafautBtn,$btnId,$upBasePath,$upPath,$imgPath,$maxLimit,$multiple,$pickWidth,$pickHeight,$pickCss,$pickLabel;
	 var $ratio;
	 var uploader;
	 var $successcallback,$queuedcallback,$errorcallback,$beforecallback,$completecallback;
	 init();
	function init(){
		if(typeof objJsons.successcallback=='function'){
			$successcallback=objJsons.successcallback;
		} 
		if(typeof objJsons.queuedcallback=='function'){
			$queuedcallback=objJsons.queuedcallback;
		} 
		if(typeof objJsons.errorcallback=='function'){
			$errorcallback=objJsons.errorcallback;
		} 
		if(typeof objJsons.beforecallback=='function'){
			$beforecallback=objJsons.beforecallback;
		} 
		if(typeof objJsons.completecallback=='function'){
			$completecallback=objJsons.completecallback;
		} 
		if(objJsons.upBasePath){
			$upBasePath = objJsons.upBasePath;
		}else{
			$upBasePath = objJsons.upPath;
		}
		$imgPath = objJsons.imgPath;
		$deafautBtn=objJsons.deafautBtn;
		var _btnParam=$($deafautBtn);
		if(_btnParam.attr("upPath")){
			$upPath = _btnParam.attr("upPath");
		}else{
			$upPath ='/seller/fex_upload.htm';
		}
		$pickWidth=_btnParam.attr("pickWidth");
		$pickHeight=_btnParam.attr("pickHeight");
		$pickLabel=_btnParam.attr("pickLabel");
		if(!$pickLabel){
			$btnId=$deafautBtn;
		}
		$pickCss=_btnParam.attr("pickCss");
		$maxLimit = !(_btnParam.attr("maxLimit"))?300:_btnParam.attr("maxLimit");//最多只能上传照片数（默认选择300张)
		$multiple = uploadStr2Bool(_btnParam.attr("fex_multiple"),"false");//是否是多张模式（true 可上传多张，false 传单张)
		$ratio = window.devicePixelRatio || 1;// 优化retina, 在retina下这个值是2
	}

    if ( !WebUploader.Uploader.support() ) {
        alert( 'Web Uploader 不支持您的浏览器！如果你使用的是IE浏览器，请尝试升级 flash 播放器');
        throw new Error( 'WebUploader does not support the browser you are using.' );
    }
	// Web Uploader实例
	uploader=WebUploader.create({
			//允许一张上传多次
			duplicate:true,
	        // 自动上传。
	        auto: true,
	        // 不压缩image
	        resize: false,
	        // swf文件路径
	        swf: $upBasePath+'/dist/resources/libs/webupload/dist/Uploader.swf',
	        // 文件接收服务端。
	       // server: upPath+'/save_clearnace_upload.htm',
	        server:$upBasePath+$upPath,
	        // 选择文件的按钮。可选。
	        // 内部根据当前运行是创建，可能是input元素，也可能是flash.
	        pick: {
	        	id:$deafautBtn,
	        	btnId:$btnId,
	        	label:$pickLabel,
	        	css:$pickCss,
	        	//label: '<span style="display:block:width: 301px; height: 201px;">点击选择图片</span>',
	        	//css:"tst-css",
	        	//是否显示多张
	        	multiple:$multiple,
	        	pickWidth:$pickWidth,
	        	pickHeight:$pickHeight
	        },
	        fileSingleSizeLimit:10*1024*1024,
	        //最大上传数
	        fileNumLimit:$maxLimit,
	        // 只允许选择文件，可选。
	        accept: {
	            title: 'Images',
	            extensions: 'gif,jpg,jpeg,bmp,png',
	            mimeTypes: 'image/*'
	        }
	    });
		//当文件被加入队列之前触发
		uploader.on('beforeFileQueued',function(file){
			if($beforecallback){
				$beforecallback(file);
			}else{
				if(file.size>10*1024*1024){
					alert("图片大小不能超过10M,请重新上传");
				}
			}
		});
	    // 当有文件添加进来的时候
	    uploader.on( 'fileQueued', function( file ) {
	    	if($queuedcallback){
	    		$queuedcallback(file);
	    	}
	    });
		// 文件上传成功，给item添加成功class, 用样式标记上传成功。
	    uploader.on( 'uploadSuccess', function(file,data) {
	    	if($successcallback){
        		$successcallback(file,data);
        	}
	    });
	   // 文件上传失败，现实上传出错。
	    uploader.on( 'uploadError', function( file ) {
	    	if($errorcallback){
	    		$errorcallback(file);
	    	}else{
	    		layer.msg("上传失败");
	    	}
	    });
	    // 完成上传完了，成功或者失败，先删除进度条。
	    uploader.on( 'uploadComplete', function( file ) {
	    	if($completecallback){
	    		$completecallback(file);
	    	}
	    });
		uploader.on('error',function(tt,file){
			if(tt=='Q_TYPE_DENIED'){
				layer.msg("照片格式不对");
			}else if(tt=='Q_EXCEED_SIZE_LIMIT'){
				layer.msg("图片超过大小限制10M");
			}else if(tt=='F_DUPLICATE'){
				layer.msg("同一张图片不能重复上传");
			}else if(tt=='F_EXCEED_SIZE'){
				layer.msg("上传失败! 文件太大！");
			}else{
				layer.msg("上传失败! "+tt);
			}
		});
		function uploadStr2Bool(value,defaultValue){
				if(null==value || (!value) || (value!="true" && value!="false")){
					if(defaultValue=="false"){
						return false;
					}else{
						return true;
					}
				}
				if(value=="false"){
					return false;
				}else if(value=="true"){
					return true;
				}
		} 
}